"""访客 API Router"""
from typing_extensions import Annotated
from fastapi import Depends, Request
from fastapi.routing import APIRouter

from api.v1.service.visit import VisitServiceAPI
from api.v1.models.response import MessageResponse, response_404, response_500
from api.v1.models.visit import VisitTotalResponse
from lib.visit import get_total_visit

router = APIRouter()


@router.get("/visit",
            summary="访客理货查询",
            responses={**response_404, **response_500})
async def read_total_visit(
    request: Request,
) -> VisitTotalResponse:
    """
查看到目前为止的访问者计数。
-使用缓存返回10分钟内缓存的数据。
-访问者数量使用首选项表中的cf_visit值。
    """
    config_visit = getattr(request.state.config, "cf_visit", "")
    return get_total_visit(config_visit)


@router.post("/visit",
             summary="创建访客访问历史记录",  
             responses={**response_404, **response_500})
async def create_visit_record(  #此函数会在http插件中被调用；
    service: Annotated[VisitServiceAPI, Depends()],
) -> MessageResponse:
    """
添加访问者访问历史记录。
-如果您已经访问过，则不会添加。（IP冗余保护）

###一起处理的任务
-添加连接历史记录
-刷新访问者总数表
-在“首选项”表中更新访问者数量
    """
    visit = service.create_visit_record()
    if not visit:
        return {"message": "这是一个已经访问过的用户."}

    return {"message": "已添加访客访问历史记录."}
